<!--
 * @Author: Rachel 943701297@qq.com
 * @Date: 2022-08-04 14:58:34
 * @LastEditors: Rachel 943701297@qq.com
 * @LastEditTime: 2022-08-05 15:45:15
 * @FilePath: \代码c:\Users\94370\Desktop\面向工作学习\笔记\learning-notes\Vue_Code\vue_2.x_doc_learning\6-列表渲染v-for.html
 * @Description: 列表渲染v-for学习
 * 
 * Copyright (c) 2022 by Rachel 943701297@qq.com, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>v-for</title>
    <script src="../js/vue.js"></script>
  </head>
  <body>
    <div id="todo-list-example">
      <form v-on:submit.prevent="addNewTodo">
        <label for="new-todo">Add a todo</label>
        <input
          v-model="newTodoText"
          id="new-todo"
          placeholder="E.g. Feed the cat"
        />
        <button>Add</button>
      </form>
      <ul>
        <li
          is="todo-item"
          v-for="(todo, index) in todos"
          v-bind:key="todo.id"
          v-bind:title="todo.title"
          v-on:remove="todos.splice(index, 1)"
        ></li>
      </ul>
    </div>
    <script>
      Vue.config.productionTip = false;
      Vue.component("todo-item", {
        template:
          "\
        <li>\
          {{ title }}\
          <button v-on:click=\"$emit('remove')\">Remove</button>\
        </li>\
      ",
        props: ["title"],
      });
      new Vue({
        el: "#todo-list-example",
        data: {
          newTodoText: "",
          todos: [
            {
              id: 1,
              title: "Do the dishes",
            },
            {
              id: 2,
              title: "Take out the trash",
            },
            {
              id: 3,
              title: "Mow the lawn",
            },
          ],
          nextTodoId: 4,
        },
        methods: {
          addNewTodo: function () {
            this.todos.push({
              id: this.nextTodoId++,
              title: this.newTodoText,
            });
            this.newTodoText = "";
          },
        },
      });
    </script>
  </body>
</html>
